package com.wish.g1.accounting.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.wish.g1.common.core.annotation.Excel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 企业账户流水明细(企业账户变动历史记录)
 * </p>
 *
 * @author maolijun
 * @since 2022-11-18
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_cw_balance")
public class Balance implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键 自增
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 商户ID
     */
    @Excel(name = "商户ID")
    private Long businessId;

    /**
     * 商户名称
     */
    @Excel(name = "商户名称")
    private String businessName;

    /**
     * 流水操作类型(画面查询显示用),1：收入，2：支出
     */
    @Excel(name = "流水操作类型(画面查询显示用),1：收入，2：支出")
    private Long balanceType;

    /**
     * 操作类型,1：充值（企业充值），2：提现（企业提现），3：收款（企业收款计划），4：付款（企付款款计划）
     */
    @Excel(name = "操作类型,1：充值", readConverterExp = "企=业充值")
    private Long operationType;

    /**
     * 操作业务订单ID，业务订单ID（收/付款计划ID，提现的时候，为提现申请单号，充值就是充值单号）
     */
    @Excel(name = "操作业务订单ID，业务订单ID", readConverterExp = "收=/付款计划ID，提现的时候，为提现申请单号，充值就是充值单号")
    private Long ywOrderId;

    /**
     * 业务订单号(收付款计划号，提现申请单号，充值单号)
     */
    @Excel(name = "业务订单号(收付款计划号，提现申请单号，充值单号)")
    private String ywOrderNo;

    /**
     * 支付订单ID, 对应的支付订单（t_cw_pay_order）流水ID，无流水的时候无
     */
    @Excel(name = "支付订单ID, 对应的支付订单", readConverterExp = "t=_cw_pay_order")
    private Long payOrderId;

    /**
     * 支付订单号（操作订单号），对应的支付订单（t_cw_pay_order）流水号，无流水的时候无
     */
    @Excel(name = "支付订单号", readConverterExp = "操=作订单号")
    private String payOrderNo;

    /**
     * 操作明细（收付款的时候，根据款项来，充值就是充值，提现就是提现）
     */
    @Excel(name = "操作明细", readConverterExp = "收=付款的时候，根据款项来，充值就是充值，提现就是提现")
    private String opItem;

    /**
     * 操作时间
     */
    @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDateTime opTime;

    /**
     * 操作金额
     * ,负数时为减
     */
    @Excel(name = "操作金额,负数时为减")
    private BigDecimal amount;

    /**
     * 新的余额
     */
    @Excel(name = "新的余额")
    private BigDecimal balance;

    /**
     * 合同ID，有对应的合同的时候记录
     */
    @Excel(name = "合同ID，有对应的合同的时候记录")
    private Long contractId;

    /**
     * 合同编号
     */
    @Excel(name = "合同编号")
    private String contractNo;

    /**
     * 合同类型, 1：收房合同，2：出房合同
     */
    @Excel(name = "合同类型, 1：收房合同，2：出房合同")
    private Long contractType;

    /**
     * 状态编码（预留字段，因为来源比较多，状态不固定，暂时不用，直接用状态名称来显示，）
     */
    @Excel(name = "状态编码", readConverterExp = "预=留字段，因为来源比较多，状态不固定，暂时不用，直接用状态名称来显示，")
    private Long statusCode;

    /**
     * 状态（由对应业务处理情况实时更新）
     */
    @Excel(name = "状态", readConverterExp = "由=对应业务处理情况实时更新")
    private String statusName;

    /**
     * 备注
     */
    @Excel(name = "备注")
    private String remarks;

    /**
     * 预留字段1
     */
    @Excel(name = "预留字段1")
    private BigDecimal reserve1;

    /**
     * 预留字段2
     */
    @Excel(name = "预留字段2")
    private Long reserve2;

    /**
     * 预留字段3
     */
    @Excel(name = "预留字段3")
    private String reserve3;

    /**
     * 预留字段4
     */
    @Excel(name = "预留字段4")
    private String reserve4;

    /**
     * 预留字段5
     */
    @Excel(name = "预留字段5")
    private String reserve5;

    /**
     * 删除标识,0:未删除，1：删除
     */
    @Excel(name = "删除标识,0:未删除，1：删除")
    private Integer delFlg;

    /**
     * 创建用户ID
     */
    @Excel(name = "创建用户ID")
    private Long createUserid;
    /**
     * 创建时间
     */
    @Excel(name = "创建时间")
    private LocalDateTime createTime;

    /**
     * 更新用户ID
     */
    @Excel(name = "更新用户ID")
    private Long updateUserid;

    /**
     * 更新时间
     */
    @Excel(name = "更新时间")
    private LocalDateTime updateTime;


}
